Magic numbers make the code more complex to understand as it requires the reader to have knowledge about the global context to understand the
number itself. Their usage may seem obvious when writing the code, but it may not be the case for another developer or later once the context faded
away. -1, 0, and 1 are not considered magic numbers.
Exceptions
This rule doesn’t raise an issue when the magic number is used as part of:
- the
GetHashCode
method
- a variable/field declaration
- the single argument of an attribute
- a named argument for a method or attribute
- a constructor call
- a default value for a method argument